package ar.com.uade.administradorsiembra.vista;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;

import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

import javax.swing.WindowConstants;
import javax.swing.SwingUtilities;

import ar.com.uade.administradorsiembra.controladores.ABMCerealController;
import ar.com.uade.administradorsiembra.modelo.exceptions.CerealYaExisteException;
import ar.com.uade.administradorsiembra.views.CerealView;
import ar.com.uade.administradorsiembra.views.MineralView;


/**
* This code was edited or generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a corporation,
* company or business for any purpose whatever) then you
* should purchase a license for each developer using Jigloo.
* Please visit www.cloudgarden.com for details.
* Use of Jigloo implies acceptance of these licensing terms.
* A COMMERCIAL LICENSE HAS NOT BEEN PURCHASED FOR
* THIS MACHINE, SO JIGLOO OR THIS CODE CANNOT BE USED
* LEGALLY FOR ANY CORPORATE OR COMMERCIAL PURPOSE.
*/
public class ModificarCerealGUI extends javax.swing.JFrame {

	{
		//Set Look & Feel
		try {
			javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
		} catch(Exception e) {
			e.printStackTrace();
		}
	}

	private JLabel jNombreCerealLabel;
	private JTextField jEpocaSiembraHastaTextField;
	private JPanel jCerealPanel;
	private JComboBox jNombreCerealComboBox;
	private JTextField jPorcentajeDespedicioTextField;
	private JLabel jPorcentajeDesperdicioLabel;
	private JButton jCancelarButton;
	private JButton jAceptarButton;
	private JRadioButton jTipoCosechaGruesaRadioButton;
	private JRadioButton jTipoCosechaFinaRadioButton;
	private JLabel jTipoCosechaLabel;
	private JComboBox jMineralPrincipalComboBox;
	private JLabel jMineralPrincipalLabel;
	private JTextField jRindeTextField;
	private JLabel jRindeLabel;
	private JLabel jEpocaSeimbraHastaLabel;
	private JTextField jEpocaSiembraDesdeTextField;
	private JLabel jEpocaSiembraDesdeLabel;
	private JLabel jEpocaSiembraLabel;

	private ABMCerealController cerealController;
	private JLabel jlblErrorModificar;
	private List<MineralView> mineralesView;
	private List<CerealView> cerealesView;
	
	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void iniciar() {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				ModificarCerealGUI inst = new ModificarCerealGUI();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}
	
	public ModificarCerealGUI() {
		super();
		initGUI();
		this.cerealController = ABMCerealController.getInstancia();
		cargarMinerales();
		cargarCereales();
	}
	
	private void cargarMinerales() {
		mineralesView = this.cerealController.getMinerales();
		
		for (MineralView mineralView : mineralesView) {
			jMineralPrincipalComboBox.addItem(mineralView.getNombre());
		}
	}
	
	private void cargarCereales(){
		cerealesView = cerealController.getCereales();
		
		for (CerealView cerealView : cerealesView) {
			jNombreCerealComboBox.addItem(cerealView.getDescripcion());
		}
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			this.setTitle("Modificar Cereal");
			getContentPane().setLayout(null);
			{
				jCancelarButton = new JButton();
				getContentPane().add(jCancelarButton);
				jCancelarButton.setText("Cancelar");
				jCancelarButton.setBounds(391, 253, 93, 23);
				jCancelarButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						jCancelarButtonActionPerformed(evt);
					}
				});
			}
			{
				jAceptarButton = new JButton();
				getContentPane().add(jAceptarButton);
				jAceptarButton.setText("Aceptar");
				jAceptarButton.setBounds(267, 253, 100, 23);
				jAceptarButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent evt) {
						jAceptarButtonActionPerformed(evt);
						JOptionPane.showMessageDialog(new JLabel("todo ok"), "Se modificaron los datos en forma exitosa");
					}
				});
			}
			{
				jNombreCerealLabel = new JLabel();
				getContentPane().add(jNombreCerealLabel);
				jNombreCerealLabel.setText("Nombre del Cereal");
				jNombreCerealLabel.setBounds(24, 27, 130, 16);
			}
			{
				ComboBoxModel jNombreCerealComboBoxModel = 
					new DefaultComboBoxModel(
							new String[] {});
				jNombreCerealComboBox = new JComboBox();
				getContentPane().add(jNombreCerealComboBox);
				jNombreCerealComboBox.setModel(jNombreCerealComboBoxModel);
				jNombreCerealComboBox.setBounds(160, 24, 158, 23);
				jNombreCerealComboBox.addItemListener(new ItemListener() {
					public void itemStateChanged(ItemEvent evt) {
						jNombreCerealComboBoxItemStateChanged(evt);
					}
				});
			}
			{
				jCerealPanel = new JPanel();
				getContentPane().add(jCerealPanel);
				jCerealPanel.setBounds(12, 59, 481, 179);
				jCerealPanel.setLayout(null);
				{
					jMineralPrincipalLabel = new JLabel();
					jCerealPanel.add(jMineralPrincipalLabel);
					jMineralPrincipalLabel.setText("Mineral Principal");
					jMineralPrincipalLabel.setBounds(12, 64, 89, 16);
				}
				{
					ComboBoxModel jMineralPrincipalComboBoxModel = 
						new DefaultComboBoxModel(
								new String[] { });
					jMineralPrincipalComboBox = new JComboBox();
					jCerealPanel.add(jMineralPrincipalComboBox);
					jMineralPrincipalComboBox.setModel(jMineralPrincipalComboBoxModel);
					jMineralPrincipalComboBox.setBounds(120, 61, 145, 23);
				}
				{
					jTipoCosechaLabel = new JLabel();
					jCerealPanel.add(jTipoCosechaLabel);
					jTipoCosechaLabel.setText("Tipo de Cosecha");
					jTipoCosechaLabel.setBounds(12, 96, 113, 16);
				}
				{
					jTipoCosechaFinaRadioButton = new JRadioButton();
					jCerealPanel.add(jTipoCosechaFinaRadioButton);
					jTipoCosechaFinaRadioButton.setText("Fina");
					jTipoCosechaFinaRadioButton.setBounds(137, 94, 63, 20);
					jTipoCosechaFinaRadioButton.setSelected(true);
					jTipoCosechaFinaRadioButton.addActionListener(new ActionListener() {
						public void actionPerformed(ActionEvent evt) {
							System.out.println("jTipoCosechaFinaRadioButton.actionPerformed, event="+evt);
							//TODO add your code for jTipoCosechaFinaRadioButton.actionPerformed
							jTipoCosechaGruesaRadioButton.setSelected(false);
						}
					});
				}
				{
					jTipoCosechaGruesaRadioButton = new JRadioButton();
					jCerealPanel.add(jTipoCosechaGruesaRadioButton);
					jTipoCosechaGruesaRadioButton.setText("Gruesa");
					jTipoCosechaGruesaRadioButton.setBounds(211, 94, 71, 20);
					jTipoCosechaGruesaRadioButton.addActionListener(new ActionListener() {
						public void actionPerformed(ActionEvent evt) {
							System.out.println("jTipoCosechaGruesaRadioButton.actionPerformed, event="+evt);
							//TODO add your code for jTipoCosechaGruesaRadioButton.actionPerformed
							jTipoCosechaFinaRadioButton.setSelected(false);
						}
					});
				}
				{
					jPorcentajeDesperdicioLabel = new JLabel();
					jCerealPanel.add(jPorcentajeDesperdicioLabel);
					jPorcentajeDesperdicioLabel.setText("Procentaje de Desperdicio");
					jPorcentajeDesperdicioLabel.setBounds(12, 131, 162, 16);
					jPorcentajeDesperdicioLabel.setEnabled(false);
				}
				{
					jPorcentajeDespedicioTextField = new JTextField();
					jCerealPanel.add(jPorcentajeDespedicioTextField);
					jPorcentajeDespedicioTextField.setBounds(174, 128, 75, 23);
					jPorcentajeDespedicioTextField.setEnabled(false);
				}
				{
					jRindeTextField = new JTextField();
					jCerealPanel.add(jRindeTextField);
					jRindeTextField.setBounds(63, 33, 98, 23);
				}
				{
					jRindeLabel = new JLabel();
					jCerealPanel.add(jRindeLabel);
					jRindeLabel.setText("Rinde");
					jRindeLabel.setBounds(12, 36, 51, 16);
				}
				{
					jEpocaSiembraHastaTextField = new JTextField();
					jCerealPanel.add(jEpocaSiembraHastaTextField);
					jEpocaSiembraHastaTextField.setBounds(281, 5, 84, 23);
				}
				{
					jEpocaSeimbraHastaLabel = new JLabel();
					jCerealPanel.add(jEpocaSeimbraHastaLabel);
					jEpocaSeimbraHastaLabel.setText("hasta");
					jEpocaSeimbraHastaLabel.setBounds(241, 8, 45, 16);
				}
				{
					jEpocaSiembraDesdeTextField = new JTextField();
					jCerealPanel.add(jEpocaSiembraDesdeTextField);
					jEpocaSiembraDesdeTextField.setBounds(175, 5, 52, 23);
				}
				{
					jEpocaSiembraDesdeLabel = new JLabel();
					jCerealPanel.add(jEpocaSiembraDesdeLabel);
					jEpocaSiembraDesdeLabel.setText("desde");
					jEpocaSiembraDesdeLabel.setBounds(132, 8, 44, 16);
				}
				{
					jEpocaSiembraLabel = new JLabel();
					jCerealPanel.add(jEpocaSiembraLabel);
					jEpocaSiembraLabel.setText("Epoca de Siembra");
					jEpocaSiembraLabel.setBounds(12, 8, 111, 16);
				}
			}
			{
				jlblErrorModificar = new JLabel();
				getContentPane().add(jlblErrorModificar);
				jlblErrorModificar.setText("jLabel1");
				jlblErrorModificar.setBounds(24, 244, 215, 14);
			}
			pack();
			this.setSize(521, 325);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private void jNombreCerealComboBoxItemStateChanged(ItemEvent evt) {
		String cereal = (String) evt.getItem();
		
		for (CerealView cerealView : cerealesView) {
			if(cerealView.getDescripcion().equals(cereal)) {
				jEpocaSiembraDesdeTextField.setText(cerealView.getFechaDesde().toString());
				jEpocaSiembraHastaTextField.setText(cerealView.getFechaHasta().toString());
				jRindeTextField.setText(cerealView.getRendimiento().toString());
				jMineralPrincipalComboBox.setSelectedItem(cerealView.getMineralPrincipal().getNombre());
				if(cerealView.getEsFino()){
					jTipoCosechaFinaRadioButton.setSelected(true);
					jTipoCosechaGruesaRadioButton.setSelected(false);
					jPorcentajeDespedicioTextField.setEnabled(false);
				} else {
					jTipoCosechaFinaRadioButton.setSelected(false);
					jTipoCosechaGruesaRadioButton.setSelected(true);
					jPorcentajeDespedicioTextField.setEnabled(true);
					jPorcentajeDespedicioTextField.setText(cerealView.getDesperdicio().toString());
				}
			}
		}
	}
	
	private void jCancelarButtonActionPerformed(ActionEvent evt) {
		this.setVisible(false);
	}
	
	private void jAceptarButtonActionPerformed(ActionEvent evt) {
		boolean esCosechaFina = jTipoCosechaFinaRadioButton.isSelected() && !jTipoCosechaGruesaRadioButton.isSelected();
		SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
		String cerealSeleccionado = (String) jNombreCerealComboBox.getSelectedItem();
		String mineralSeleccionado = (String) jMineralPrincipalComboBox.getSelectedItem();
		Integer codigoMineral = 0;
		CerealView cereal = new CerealView();
		
		for (CerealView cerealView : cerealesView) {
			if(cerealView.getDescripcion().equals(cerealSeleccionado)){
				cereal = cerealView;
				break;
			}
		}
		
		for (MineralView mineralView : mineralesView) {
			if(mineralView.getNombre().equals(mineralSeleccionado)){
				codigoMineral = mineralView.getCodigo();
				break;
			}
		}
		
		try {
			if(esCosechaFina){							
				this.cerealController.modificarCerealFino(cereal.getCodigo(), cereal.getDescripcion(), dateFormat.parse(jEpocaSiembraDesdeTextField.getText()), dateFormat.parse(jEpocaSiembraHastaTextField.getText()), Float.parseFloat(jRindeTextField.getText()), codigoMineral, cereal.getTipoCereal());	
			} else {
				this.cerealController.modificarCerealGrueso(cereal.getCodigo(), cereal.getDescripcion(), dateFormat.parse(jEpocaSiembraDesdeTextField.getText()), dateFormat.parse(jEpocaSiembraHastaTextField.getText()), Float.parseFloat(jRindeTextField.getText()), codigoMineral, cereal.getTipoCereal(), Float.parseFloat(jPorcentajeDespedicioTextField.getText()));
			}
		} catch (NumberFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		this.setVisible(false);
	
	}

}
